package com.atguigu.lease.web.admin.custom.converter;

import com.atguigu.lease.model.enums.ItemType;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

@Component
public class StringToItemTypeConverter implements Converter<String, ItemType> {
    //这个转换器的能力是把string转换成ItemType枚举类
    @Override
    public ItemType convert(String source) {
        ItemType[] itemTypes = ItemType.values();
        for (ItemType itemType : itemTypes) {
            if (itemType.getCode().equals(Integer.valueOf(source))) {
                return itemType;
            }
        }
        throw new RuntimeException("参数转换为枚举类型失败");
    }

    //source就是前端传递过来的字符串
    //获取ItemType枚举类的所有值,结果是一个ItemType类型的数组
    //增强for循环遍历数组
    //如果数组中的值等于前端传递过来的值（这是字符串转换而来的，因为数值不能直接跟字符串比较）
    // 就返回这个枚举类
    //假如传了2，因为itemType.getCode()只能出来1或2，所以遍历循环有返回值，直接返回这个枚举类不会运行到异常语句
    //假如传了3，因为itemType.getCode()只能出来1或2，所以遍历循环没有返回值，运行到异常语句，抛出异常
}